#根据项数生成斐波那契数列
def fibonacci_by_count(count):
    fib =[]
    a,b=0,1
    for _ in range(count):
        fib.append(a)
        a,b=b,a+b
    return fib
#根据数值生成斐波那契数列
def fibonacce_by_max_value(max_value):
    fib=[]
    a,b=0,1
    while a<=max_value:
        fib.append(a)
        a,b=b,a+b
    return fib
#主逻辑
print("斐波那契数列生成器")
print("1.按指定项数生成，2.按最大值生成")
#选择模式
while True:
    mode=input("请选择模式（1/2）：")
    if mode in["1","2"]:
        break
    print("输入错误，请重新输入")
#生成并输出数列
if mode=="1":
#按项数输出
    while True:
        count_input = input("请输入项数(正数)")
        if count_input.isdigit() and int(count_input)>0:
            count=int(count_input)
            result=fibonacci_by_count(count)
            break
        print("输入错误，请输入正整数！")
    print(f"斐波那契数列前{count}项：{result}")
else:
#按最大值输出
    while True:
        max_input=input("请输入数列的最大数值（非负整数）：")
        if max_input.isdigit():
            max_val=int(max_input)
            result=fibonacce_by_max_value(max_val)
            break;
        print("输入错误，请重新输入：")
    print(f"不超过{max_val}的斐波那契数列：{result}")